The present invention relates to programming and control systems. More particularly, this invention relates to flowchart-based programming and control systems that automatically capture operational modes of a process for downtime and cycle time analysis.
Programming and control systems are generally used for controlling processes that involve devices such as relays, solenoids, motors, valves, switches, and other electrical and electromechanical devices. The processes that are controlled include machining, drilling, welding, spraying paint, mixing materials, assembling parts, handling materials, etc.
Conventional programming and control systems generally employed ladder diagrams and relay ladder logic (RLL) to control the operation of the devices associated with the processes. In practice, however, programmers tend to use a flowchart to initially define the operation of the devices in the process. Then, the programmers manually translated the flowchart into the ladder diagrams. The programmers employ the flowcharts as a first step because the flowcharts emulate human thought processes whereas the ladder diagrams do not. Recognizing that the translation of flowcharts to RLL was an unneeded step, developers created programming and control systems that automatically convert flowcharts to RLL. Subsequently, developers created programming and control systems that control the process directly from the flowchart logic. One flowchart-based system is disclosed in “Continuous Flowchart, Improved Data Format and Debugging System For Programming and Operation of Machines”, U.S. Pat. No. 4,852,047, which is hereby incorporated by reference.
Flowcharts generally include action blocks which represent an operation or action based on current input and output data. Action blocks generally have one entry point which is usually located at the top and one exit point that is usually located at the bottom. A branching or decision block is a diamond-shaped block which represents a branch in the control path based on the results of a decision. Branching blocks generally have one entry point that is usually located at the top and two exit points that are usually located at the side and the bottom. Using combinations of the action and branching blocks, a programmer creates a flowchart that controls one or more devices that are associated with a process.
As a process is operated, the controller moves through the flowchart action and decision blocks. The location of the block within the flowchart provides information concerning the operational status of the process. While conventional flowchart systems typically display the current location of control within the flowchart, these systems generally do not track the operational status of the process over time.
Process engineers, production supervisors and plant managers are responsible for maximizing the output of the process. In order to make informed decisions, the managers, supervisors and engineers need information identifying the reasons for process downtime as well as the cycle time of each step of the process to maximize throughput. In the past, the managers, supervisors and engineers needed to develop special logic for capturing downtime reasons and cycle times of the process.
A flowchart-based programming and control system includes a computer with a processor, memory, and display. A device is connected to the computer and is associated with a process. A flowcharting module run by the computer generates and edits flowchart source code that includes flowchart blocks and that contains logic for operating the device to further the process. First and second flowchart blocks change an operational state of the process. A reason code module associated with the flowcharting module assigns reason codes to the status of the process using a special type of action or decision block. The flowchart module compiles the flowchart source code into flowchart object code. A flowchart run-time engine module associated with the computer executes the flowchart object code to control the process. The flowchart object code generates the reason codes during execution of the associated flowchart blocks in the flowchart object code. A performance analysis module and a charting module record and graphically represent the operational state of the process over time.